(function() {
    "use strict";
    var e = window.jQuery,
        t = window.qh360cp,
        n = window._,
        r = {
            addGroup: function(e) {
                var t = this;
                for (var r = 0, i = e.length; r < i; r++) {
                    if (t.options.zuxuan) {
                        var s = n.find(t.options.zzcc, function(t) {
                            return t == e[r]
                        });
                        if (s) continue
                    }
                    this.addCondition(this.map[e[r]], e[r])
                }
                this.updateCount()
            },
            addCondition: function(n, r) {
                var i = this.testErrorHao();
                if (i && i.iserror) {
                    t.lightbox.alert({
                        content: i.eText,
                        on_focus: ".lightbox_confirm"
                    });
                    return
                }
                var s = this.getActiveGroup(),
                    o = ",ss,sjzs,zyxz,".indexOf("," + r + ",") > -1,
                    u = this;
                o && s && (s = !1);
                if (!s) {
                    var a = this.table.find(".stepbody").length;
                    if (a >= 20) {
                        t.lightbox.alert({
                            content: "\u5bf9\u4e0d\u8d77\uff0c\u6700\u591a\u652f\u630120\u6b65\u8fc7\u6ee4\u6761\u4ef6\uff01",
                            on_focus: ".lightbox_confirm"
                        });
                        return
                    }
                    r == "ss" ? (this.table.prepend("<tbody class='stepbody'></tbody>"), s = this.table.find("tbody.stepbody:first")) : (this.table.append("<tbody class='stepbody'></tbody>"), s = this.table.find("tbody.stepbody:last"));
                    var f = this.getGuid(),
                        l = "<tr id='" + f + "' class='condition-step'>" + e("#filter_step").html() + "</tr>";
                    s.append(l), e("#" + f).find(".rongcuo,.filtered").hide(), this.resetStepNum(), this.resetNoFilter(s.attr("sort-index"));
                    var c = e("#" + f);
                    this.compareValue(c.find(".val1")[0], c.find(".val2")[0])
                } else {
                    var h = s.find("tr").length;
                    if (h > 32) {
                        t.lightbox.alert({
                            content: "\u5bf9\u4e0d\u8d77\uff0c\u5355\u6b65\u6700\u591a\u652f\u630132\u4e2a\u8fc7\u6ee4\u6761\u4ef6\uff01",
                            on_focus: ".lightbox_confirm"
                        });
                        return
                    }
                }
                var p = this.getGuid(),
                    d = '<tr id="' + p + '" condition="' + r + '">' + e(this.mod[n[1]]).html() + "</tr>",
                    v = e(s[0]).find(".exp");
                v.hasClass("on") || v.click(), e(s[0]).append(d), d = e("#" + p), d.prev().removeClass("last-child"), d.addClass("last-child");
                var m = d.find("td");
                switch (n[1]) {
                    case 0:
                    case 1:
                        e(m[2]).find("span:eq(0)").html(n[0]);
                        break;
                    case 2:
                        e(m[1]).find("span:eq(0)").html(n[0]);
                        break;
                    case 4:
                        e(m[1]).find("span:eq(1)").html(n[0])
                }
                n[1] === 3 && (d.find("input.coolgl").attr("g-type", n[0]), d.find(".gl_txt").html(n[0])), o && (s.attr("filtered", "1"), s.find("span.step-count").html(1)), this.compareValue(d.find(".val1")[0], d.find(".val2")[0]), this.initValue(d, r), this.changeConditionCount();
                var g = e("#condition_scroll")[0];
                g.scrollHeight > 0 && (r == "ss" ? g.scrollTop = 0 : g.scrollTop = g.scrollHeight)
            },
            changeConditionCount: function() {
                var t = this.table.find("tbody.stepbody").size();
                t > 0 ? (e("#condition_title,#condition_box").show(), e("#show_Description").hide()) : (e("#condition_title,#condition_box").hide(), e("#show_Description").show())
            },
            deleteGroup: function(t) {
                var n = e(t).parent().attr("sort-index");
                e(t).parent().remove(), this.resetStepNum(), this.resetNoFilter(n + 1), this.changeConditionCount()
            },
            deleteCondition: function (t) {
                var n = e(t).parent();
                e(n).find("tr").length == 2 ? this.deleteGroup(t) : (e(t).remove(), e(n).find("tr:last").addClass("last-child"), this.resetGroupErr(n), this.updateCount(n)), this.changeConditionCount()
            },
            updateCount: function (e) {
                if (e === undefined) {
                    var e = this.getActiveGroup();
                }
                //var e = this.getActiveGroup();
                e && e.find("span.step-count").html(e.find("tr[condition]").size())
            },
            getActiveGroup: function () {
                var e = this.table.find("tbody.stepbody:last"),
                    t = e.find("tr:eq(1)").attr("condition"),
                    n = ",ss,sjzs,zyxz,".indexOf("," + t + ",") > -1;
                return n ? undefined : e.length == 0 || e.attr("filtered") == 1 ? undefined : e
            },
            resetStepNum: function() {
                this.table.find("tbody.stepbody").each(function(t, n) {
                    e(n).find(".condition-step strong").html(t + 1), e(n).attr("sort-index", t)
                })
            },
            resetGroupErr: function(t) {
                e(t).find(".rongcuo").show();
                var n = e(t).find("input:checked", t).size();
                n == 0 && e(t).find(".rongcuo").hide(), this.setOptions(e(t).find("tr:first select"), n + 1), this.resetNoFilter(e(t).attr("sort-index"))
            },
            setOptions: function(e, t, n) {
                t = Math.max(1, t), n = n || 0;
                for (var r = e.length; r--;) {
                    var i = e[r],
                        s = Math.max(Math.min(i.options.selectedIndex, t - 1), 0);
                    s + 1 > t - n && (s = 0), i.options.length = 0;
                    if (t < 2) {
                        i.disabled = !0;
                        continue
                    }
                    i.disabled = !1;
                    for (var o = n; o < t; o++) i.options.add(new Option(o, o));
                    i.options[s].selected = !0
                }
            },
            clear: function() {
                this.table.find("tbody.stepbody").remove(), this.changeConditionCount(), this.clearLastR()
            },
            resetNoFilter: function(t) {
                this.table.find("tbody.stepbody").each(function(n, r) {
                    n >= t && e(r).find("span.step-zs").html("\u672a\u5904\u7406"), e(r).attr("filtered", 0)
                })
            },
            clearLastR: function() {
                e("#new_zs,#new_zs2").html(0), e("#zip_scale,#zip_scale2").html("0%"), e("#old_zs,#old_zs2").html(0), e("#money").html(0), e(".ggtypeText").html(""), e("#filter_codes tr .index,#filter_codes tr .hao").html("")
            },
            initCoolBtn: function(t, n) {
                var r = this;
                if (!t) return;
                var i = t == "lmgl",
                    s = !1;
                this.type = t;
                var o = e("#" + this.options.codeTipId),
                    u = o.find(".chkvalue"),
                    a = o.find(".chbox"),
                    f = o.find(".wsgejia");
                r.deleteList();
                if (n) {
                    var l = n.p;
                    if (!l.set) {
                        var c = l.h;
                        u.each(function(t, n) {
                            this.nodeName == "INPUT" && (n.checked = l.v[t]), this.nodeName == "SELECT" && e(n).val(l.v[t])
                        }), o.find("input[name=" + n.m + "radio]").each(function() {
                            e(this).val() == (l.d ? 1 : 0) ? this.checked = !0 : this.checked = !1
                        });
                        if (t == "whpp") {
                            var h = l.h.toString();
                            c = h.split(",")
                        } else if (r.options.tipType == "emgl") {
                            var p = o.find("select");
                            p.val(l.f);
                            var d = "," + l.v.join(",") + ",";
                            o.find("input[type=checkbox]").each(function(t, n) {
                                var r = "," + e(n).val() + ",";
                                d.indexOf(r) > -1 ? n.checked = !0 : n.checked = !1
                            })
                        }
                        a.each(function(t) {
                            var n = c[t];
                            n === !0 || c[t] == "true" ? e(this).addClass("chbox-s") : e(this).removeClass("chbox-s")
                        }), f.each(function() {
                            this.checked = !1;
                            var t = l.a ? "1" : "0";
                            e(this).val() == t && (this.checked = !0)
                        })
                    } else s = !0;
                    o.find("ul.code_list").length > 0 && e.each(n.p.set, function() {
                        r.addItem(this)
                    })
                } else s = !0;
                s && (o.find("input").attr("checked", !1), o.find("select").each(function() {
                    this.selectedIndex = 0
                }), o.find("input[name=" + r.options.tipType + "radio]").each(function(e) {
                    if (e == 0) return this.checked = !0, !1
                }), o.find("input[name=" + r.options.tipType + "r]").each(function(e) {
                    if (e == 0) return this.checked = !0, !1
                }), a.removeClass("chbox-s"));
                if (t == "cc") o.find(".shedan-list label").each(function() {
                    var t = e(this).find("input"),
                        n = e(this).find(".boll"),
                        r = "redboll",
                        i = "rlist";
                    e(this).parent().attr("id") == "blue_sdlist" && (r = "blueboll", i = "blist"), n.unbind("click").click(function() {
                        e(this).hasClass(r) ? e(this).removeClass(r) : e(this).addClass(r)
                    }).attr("class", "boll")
                });
                else if (t == "cgfz") {
                    var v = o.find(".range");
                    r.initValue(v, e("#cgfzType").val(), 1), r.compareValue(v.find("select")[0], v.find("select")[1])
                } else if (t == "qjgl") {
                    o.find(".qjselect").click(function() {
                        var t = e(this).attr("title").split("-"),
                            n = e(this).parent().find("select");
                        n.eq(0).val(t[0]), n.eq(1).val(t[1])
                    }), o.find(".qjselect").eq(0).click();
                    var m = o.find("select");
                    r.compareValue(m[0], m[1])
                } else t == "dwgl" && e("#dwglAll").click(function() {
                    var t = e(this).parent().find("select"),
                        n = t.eq(0).val(),
                        r = t.eq(1).val();
                    o.find(".shiwei").each(function(t) {
                        t > 5 && n != "*" && n > 1 ? e(this).val("*") : e(this).val(n)
                    }), o.find(".gewei").each(function(t) {
                        t > 5 && r != "*" && r > 6 ? e(this).val("*") : e(this).val(r)
                    })
                })
            },
            saveTipsValue: function(n) {
                if (!n) return;
                var r = this,
                    i = e(n).parents(".new_tips_box");
                if (i.find(".error").length > 0) return t.lightbox.alert({
                    content: " \u60a8\u8bbe\u7f6e\u7684\u6761\u4ef6\u8303\u56f4\u6709\u9519(\u6709\u9ec4\u8272\u80cc\u666f\u7ea2\u8272\u8fb9\u6846\u7684\u4e3a\u9519)\uff0c\u8bf7\u66f4\u6b63!",
                    on_focus: ".lightbox_confirm"
                }), !1;
                var s = [],
                    o = {
                        m: r.options.tipType,
                        p: {
                            v: [],
                            d: !1
                        },
                        text: ""
                    };
                o.p.d = i.find("input[name=" + o.m + "radio]:checked").val() == 0 ? !1 : !0;
                var u = i.find(".chkvalue"),
                    a = i.find(".chbox"),
                    f = i.find(".wsgejia:checked"),
                    l = [],
                    c = {};
                a.length > 0 && (o.p.h = [], o.p.hv = [], a.each(function(t) {
                    if (e(this).hasClass("chbox-s")) {
                        o.p.hv.push(e.trim(e(this).text())), o.p.h.push(!0);
                        if (o.m == "whpp") {
                            var n = Math.floor(t / 10);
                            c[n] || (c[n] = {}, c[n].Text = i.find(".wht:eq(" + n + ")").text(), c[n].v = []), c[n].v.push(e.trim(e(this).text()))
                        }
                    } else o.p.h.push(!1)
                }), o.p.hv.length > 0 && (o.text += "" + o.p.hv.join(",") + "|")), f.length > 0 && (o.p.a = f.val() == 1 ? !0 : !1, o.text += (o.p.a ? "\u7d2f\u52a0" : "\u4e0d\u7d2f\u52a0") + "|");
                if (o.m == "whpp") {
                    o.text = "";
                    var h = o.p.h;
                    o.p.h = [];
                    var p = [];
                    e.each(h, function(e, t) {
                        e % 10 == 0 && p.length > 0 && (o.p.h.push(p), p = []), p.push(t)
                    }), o.p.h.push(p), delete o.p.hv, delete o.p.d;
                    for (var d in c) o.text += c[d].Text + ":" + c[d].v.join(",") + "|"
                } else if (r.options.tipType == "emgl") {
                    var v = {},
                        m = i.find("select");
                    o.p.f = m.val();
                    if (o.p.f == null || o.p.f == undefined) return t.lightbox.alert({
                        content: " \u5fc5\u987b\u9009\u62e9\u4e8c\u7801\u7c7b\u578b!",
                        on_focus: ".lightbox_confirm"
                    }), !1;
                    o.p.v = [];
                    var g = [];
                    i.find("input[type=checkbox]:checked").each(function() {
                        o.p.v.push(e(this).val()), g.push(e(this).parent().text())
                    });
                    if (o.p.v.length == 0) return t.lightbox.alert({
                        content: " \u5fc5\u987b\u8bbe\u7f6e\u76f8\u5e94\u7c7b\u578b\u503c!",
                        on_focus: ".lightbox_confirm"
                    }), !1;
                    o.text = m[0].options[m[0].selectedIndex].text + "|" + g + "|"
                }
                return u.length > 0 && (u.each(function() {
                    this.nodeName == "INPUT" && (o.p.v.push(this.checked), this.checked && l.push(e(this).parent().text())), this.nodeName == "SELECT" && (o.p.v.push(e(this).val()), l.push(this.options[this.selectedIndex].text))
                }), o.text += l.length == 0 ? "\u6ca1\u6709\u9009\u62e9\u503c|" : l.join(",") + "|"), i.find("input[name=" + o.m + "radio]:checked").length > 0 ? o.text += o.p.d ? "\u6ee4\u9664" : "\u4fdd\u7559" : o.text = o.text.substring(0, o.text.length - 1), i.find("ul.code_list").length > 0 && (o = {
                    m: r.options.tipType,
                    p: {
                        set: []
                    }
                }, e("#" + o.m + "list li").each(function() {
                    o.p.set.push(e(this).data("code"))
                })), o.text && (o.text = o.text.replace(/\s/g, "")), o
            },
            addItem: function(n, r) {
                if (!n) {
                    if (n === !1) return;
                    t.lightbox.alert({
                        content: " " + this.map[this.type][0] + "\u81f3\u5c11\u8981\u9009\u62e9\u4e00\u4e2a\u9009\u9879!",
                        on_focus: ".lightbox_confirm"
                    });
                    return
                }
                if (r) e("#" + r).data("code", n).find(".data").html(n.text).attr("title", n.text);
                else {
                    var i = e("#" + this.options.codeTipId).find(".code_list"),
                        s = i.find("li").length;
                    if (s > 31) {
                        t.lightbox.alert({
                            content: "\u5bf9\u4e0d\u8d77\uff0c\u6700\u591a\u652f\u630132\u4e2a\u6761\u4ef6\uff01",
                            on_focus: ".lightbox_confirm"
                        });
                        return
                    }
                    var o = s % 2 ? "even" : "",
                        u = '<li class="' + o + '" id="' + this.getGuid() + '"><span class="data" title="' + n.text + '">' + n.text + '</span><a href="javascript:void 0" class="del">\u5220\u9664</a></li>';
                    i.append(u), i.find("li:last").data("code", n)
                }
            },
            deleteItem: function(t) {
                e(t).remove(), e(t).parent().find("li").each(function(e, t) {
                    e.className = t % 2 ? "" : "even"
                })
            },
            deleteList: function() {
                e("#" + this.options.codeTipId).find(".code_list").empty()
            },
            getCode: function() {
                var n = e("#" + this.options.codeTipId),
                    r = [],
                    i = this,
                    s = !1,
                    o = "",
                    u = {};
                if (n.find(".error").length > 0) return t.lightbox.alert({
                    content: " \u60a8\u8bbe\u7f6e\u7684\u6761\u4ef6\u8303\u56f4\u6709\u9519(\u6709\u9ec4\u8272\u80cc\u666f\u7ea2\u8272\u8fb9\u6846\u7684\u4e3a\u9519)\uff0c\u8bf7\u66f4\u6b63!",
                    on_focus: ".lightbox_confirm"
                }), !1;
                if (i.options.tipType == "zbjo" || i.options.tipType == "lu012") {
                    var a = {},
                        f = n.find("input[name=" + i.options.tipType + "r]:checked");
                    i.options.tipType == "zbjo" ? a.v = f.val() == 1 ? !0 : !1 : a.v = f.val();
                    var l = f.parent().text(),
                        c = n.find("select");
                    return a.f = c.val(), a.d = n.find("input[name=" + i.options.tipType + "radio]:checked").val() == 0 ? !1 : !0, a.text = c[0].options[c[0].selectedIndex].text + "|" + l + "|" + (a.d ? "\u6ee4\u9664" : "\u4fdd\u7559"), a.text = a.text.replace(/\s/g, ""), a
                }
                if (i.options.tipType == "cc") {
                    var a = {
                            h: [],
                            co: [
                                [],
                                []
                            ]
                        },
                        h = [];
                    n.find("#red_sdlist .redboll ").each(function() {
                        a.co[0].push(e(this).attr("value"))
                    }), n.find("#blue_sdlist .blueboll").each(function() {
                        a.co[1].push(e(this).attr("value"))
                    }), a.text = (a.co[0].length > 0 ? a.co[0] : "") + (a.co[1].length > 0 ? "+" + a.co[1] : "") + "|", n.find(".ppvalue").each(function() {
                        a.h.push(this.checked), this.checked && (a.text += e(this).val() + ",", h.push(e(this).val()))
                    });
                    if (a.co[0].length == 0 && a.co[1].length == 0) return t.lightbox.alert({
                        content: " \u81f3\u5c11\u9009\u4e00\u4e2a\u53f7\u7801!",
                        on_focus: ".lightbox_confirm"
                    }), !1;
                    if (h.length == 0) return t.lightbox.alert({
                        content: " \u5339\u914d\u4e2a\u6570\u81f3\u5c11\u9009\u4e00\u4e2a\u503c!",
                        on_focus: ".lightbox_confirm"
                    }), !1;
                    a.text = a.text.substring(0, a.text.length - 1);
                    if (i.options.mwh && !i.options.zuxuan) {
                        a.text = i.options.febuTexts[0] + ":", a.co = [];
                        var p = [],
                            d = n.find("#red_sdlist .boll:visible ");
                        d.each(function(t, n) {
                            t % 10 == 0 && t > 0 && (a.co.push(p), a.text += (p.length > 0 ? p : "\u7a7a") + "," + i.options.febuTexts[Math.ceil(t / 10)] + ":", p = []), e(n).hasClass("redboll") && p.push(e(n).attr("value") * 1), t == d.length - 1 && (a.co.push(p), a.text += p.length > 0 ? p : "\u7a7a")
                        }), a.text += "|" + h
                    }
                    return a
                }
                if (i.options.tipType == "cgfz") {
                    var a = {
                        m: [],
                        h: {},
                        text: ""
                    };
                    a.f = e("#cgfzType").val(), n.find(".range select").each(function(t) {
                        t == 0 && (a.h.n = e(this).val()), t == 1 && (a.h.x = e(this).val())
                    });
                    var v = !1;
                    return n.find(".cgfzValue").each(function() {
                        a.m.push(this.checked);
                        var t = e(this).parents("tr").find(".wht").html();
                        this.checked && (v = !0, a.text += t + ",")
                    }), v ? (a.text = a.text.substring(0, a.text.length - 1), a.text += "|" + cgfzType.options[cgfzType.selectedIndex].text + ":" + a.h.n + "-" + a.h.x, a.text = a.text.replace(/\s/g, ""), a) : (t.lightbox.alert({
                        content: " \u53f7\u7801\u4f4d\u81f3\u5c11\u9009\u4e00\u4e2a\u503c!",
                        on_focus: ".lightbox_confirm"
                    }), !1)
                }
                if (i.options.tipType == "qjgl") {
                    var a = {
                            h: [],
                            r: {},
                            text: ""
                        },
                        h = [];
                    return n.find("select").each(function(t) {
                        t == 0 && (a.r.n = e(this).val()), t == 1 && (a.r.x = e(this).val())
                    }), a.text += a.r.n + "-" + a.r.x + "|", n.find(".ppvalue").each(function() {
                        a.h.push(this.checked), this.checked && (a.text += e(this).val() + ",", h.push(e(this).val()))
                    }), h.length == 0 ? (t.lightbox.alert({
                        content: " \u5339\u914d\u4e2a\u6570\u81f3\u5c11\u9009\u4e00\u4e2a\u503c!",
                        on_focus: ".lightbox_confirm"
                    }), !1) : (a.text = a.text.substring(0, a.text.length - 1), a.text = a.text.replace(/\s/g, ""), a)
                }
                if (i.options.tipType == "dwgl") {
                    var a = {
                        s: [],
                        g: [],
                        d: !1,
                        text: ""
                    };
                    return n.find(".shiwei").each(function(t) {
                        a.s.push(e(this).val())
                    }), n.find(".gewei").each(function(t) {
                        a.g.push(e(this).val())
                    }), a.text += a.s + "|" + a.g + "|", a.d = n.find("input[name=" + i.options.tipType + "radio]:checked").val() == 0 ? !1 : !0, a.text += a.d ? "\u6ee4\u9664" : "\u4fdd\u7559", a.text = a.text.replace(/\s/g, ""), a
                }
            },
            getCodes: function() {
                var t = [];
                return e("#" + this.options.codeTipId).find(".code_list li").each(function(n, r) {
                    t.push(e(r).data("code"))
                }), t
            },
            setChangeli: function(t) {
                if (!t) return;
                var n = e("#" + this.options.codeTipId),
                    r = this;
                r.options.tipType == "zbjo" || r.options.tipType == "lu012" ? (n.find("input[name=" + r.options.tipType + "r]").each(function() {
                    r.options.tipType == "zbjo" ? e(this).val() == (t.v ? "1" : "2") ? this.checked = !0 : this.checked = !1 : e(this).val() == t.v ? this.checked = !0 : this.checked = !1
                }), n.find("select").val(t.f)) : r.options.tipType == "cc" ? (n.find(".ppvalue").each(function(e) {
                    this.checked = t.h[e]
                }), n.find("#red_sdlist .boll").each(function(n) {
                    var i = "," + t.co[0].join(",") + ",";
                    r.options.mwh && (i = "," + t.co[Math.floor(n / 10)].join(",") + ","), i.indexOf("," + e(this).attr("value") + ",") > -1 ? e(this).addClass("redboll") : e(this).removeClass("redboll")
                }), n.find("#blue_sdlist .boll").each(function() {
                    var n = "," + t.co[1].join(",") + ",";
                    n.indexOf("," + e(this).attr("value") + ",") > -1 ? e(this).addClass("blueboll") : e(this).removeClass("blueboll")
                })) : r.options.tipType == "cgfz" ? (e("#cgfzType").val(t.f).change(), n.find(".range select").each(function(n) {
                    n == 0 && e(this).val(t.h.n), n == 1 && e(this).val(t.h.x)
                }), n.find(".cgfzValue").each(function(e) {
                    this.checked = t.m[e]
                })) : r.options.tipType == "qjgl" ? (n.find("select").each(function(n) {
                    n == 0 && e(this).val(t.r.n), n == 1 && e(this).val(t.r.x)
                }), n.find(".ppvalue").each(function(e) {
                    this.checked = t.h[e]
                })) : r.options.tipType == "dwgl" && (n.find(".shiwei").each(function(n) {
                    e(this).val(t.s[n])
                }), n.find(".gewei").each(function(n) {
                    e(this).val(t.g[n])
                })), n.find("input[name=" + r.options.tipType + "radio]").each(function() {
                    e(this).val() == (t.d ? "1" : "0") ? this.checked = !0 : this.checked = !1
                })
            },
            closeCool: function() {
                e(".new_tips_box").hide(), this.closeMask()
            },
            closeMask: function() {
                e("#mask_panel").hide(), e(".ie6").length > 0 && e("#filterDiv select").show()
            },
            openDlg: function(t) {
                e(t).each(function() {
                    var t = e("body").width(),
                        n = e(this).width();
                    e(this).css({
                        position: "absolute",
                        visibility: "visible",
                        top: 100,
                        "z-index": 999,
                        left: (t - n) / 2
                    })
                }), e(t).show(), this.showMask()
            },
            showMask: function() {
                var t = e("body").width(),
                    n = e("body").height(),
                    r = e(window).height();
                n = n > r ? n : r, e("#mask_panel").css({
                    width: t,
                    height: n
                }).show(), e(".ie6").length > 0 && e("#filterDiv select").hide()
            }
        };
    e.extend(t.QFilter, r)
})();